package org.jsola.hr.helper;

import org.jsola.hr.dto.AttendPeriodStatAddDTO;
import org.jsola.hr.dto.AttendPeriodStatUpdateDTO;
import org.jsola.hr.entity.AttendPeriodStatDO;
import org.jsola.hr.query.AttendPeriodStatQuery;
import org.jsola.hr.service.IAttendPeriodStatService;
import org.jsola.hr.vo.AttendPeriodStatVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * @author zhr
 */
@Component
public class AttendPeriodStatTestHelper extends BaseTestHelper {
    
    @Autowired
    private IAttendPeriodStatService attendPeriodStatService;

    /**
     * 生成add测试数据
     * @return AttendPeriodStatAddDTO
     */
    public AttendPeriodStatAddDTO getAttendPeriodStatAddDTO(){
        AttendPeriodStatAddDTO attendPeriodStatAddDTO = new AttendPeriodStatAddDTO();
        attendPeriodStatAddDTO.setPeopleMonthlyStatId(getRandomValue("varchar",32));
        attendPeriodStatAddDTO.setCompanyId(getRandomValue("varchar",32));
        attendPeriodStatAddDTO.setAttendPlanId(getRandomValue("varchar",32));
        attendPeriodStatAddDTO.setEmpInfoId(getRandomValue("varchar",32));
        attendPeriodStatAddDTO.setAttendPunchTimeId(getRandomValue("varchar",32));
        attendPeriodStatAddDTO.setPeriod(getRandomValue("varchar",255));
        attendPeriodStatAddDTO.setYearly(getRandomValue("varchar",10));
        attendPeriodStatAddDTO.setMonthly(getRandomValue("varchar",10));
        attendPeriodStatAddDTO.setAttendRecordId(getRandomValue("varchar",32));
        return attendPeriodStatAddDTO;
    }


    /**
     * 生成update测试数据
     * @return AttendPeriodStatUpdateDTO
     */
    public AttendPeriodStatUpdateDTO getAttendPeriodStatUpdateDTO(AttendPeriodStatVO attendPeriodStatVO){
        return attendPeriodStatService.selectDOById(attendPeriodStatVO.getId(), SITE_ID).to(AttendPeriodStatUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return AttendPeriodStatQuery
     */
    public AttendPeriodStatQuery getAttendPeriodStatQuery() {
        AttendPeriodStatQuery attendPeriodStatQuery = new AttendPeriodStatQuery();
        List<AttendPeriodStatDO> attendPeriodStatDOList = attendPeriodStatService.list(new AttendPeriodStatDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(attendPeriodStatDOList)) {
            AttendPeriodStatDO attendPeriodStatDO = attendPeriodStatDOList.get(0);
            attendPeriodStatQuery = attendPeriodStatDO.to(AttendPeriodStatQuery.class);
        }
        return attendPeriodStatQuery;
    }

    /**
     * 保存示例
     * @return AttendPeriodStatVO
     */
    public AttendPeriodStatVO saveAttendPeriodStatExample(){
        AttendPeriodStatAddDTO addDTO = this.getAttendPeriodStatAddDTO();
        AttendPeriodStatVO attendPeriodStatVO = attendPeriodStatService.save(addDTO,buildTokenUser());
        return attendPeriodStatVO;
    }


}

